package com.example.tliasfight.service.impl;

import com.example.tliasfight.anno.Mylog;
import com.example.tliasfight.mapper.EmpMapper;
import com.example.tliasfight.pojo.Character;
import com.example.tliasfight.pojo.Emp;
import com.example.tliasfight.pojo.PageBean;
import com.example.tliasfight.service.EmpService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.util.List;
@Slf4j
@Service
public class EmpServiceImpl implements EmpService
{
    @Autowired
    private EmpMapper empMapper;
    @Override
    public PageBean Page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end)
    {
        //设置分页参数
        PageHelper.startPage(page, pageSize);
        //执行查询
        List<Emp> emplist=empMapper.Page(name,gender,begin,end);//类似于进行了sql语句中的where筛选，对筛选后的结果放到集合，page和pageSize默认是有数值的，所以可能在转化成Page<Emp>集合的时候（新的一种集合）
                                                                // 已经按照分页参数的数据分好了，当前新集合的特点是:每一页的数据是list集合装的。然后每次调这个方法说明控制器捕捉到了新的请求（也就是新的页码）page会更新，至于pageSize更不更新也不影响什么，
                                                               //  然后对数据进行了筛选再根据传入的page数值再进行当前page页数据的封装（封装到了（Page<Emp>类型的）p集合）然后把当前page页的数据封装到PageBean返回给控制器
                                                           //一旦page更新了，那么Page<Emp>类型的p也会更新内容，更新完内容之后返回给控制器就好了。
        Page<Emp> p=(Page<Emp>) emplist;//分页查询的结果，每一页的数据,要传入PageBean中，必须是List类型

        log.info("当前页：{}",p.getPageNum());
       //PageInfo.of()
        //封装Pagebean对象
        PageBean pageBean=new PageBean(p.getTotal(),p.getResult());
        return pageBean;
    }
    @Override

    public void delete(List<Integer> ids)
    {
        empMapper.delete(ids);
    }

    @Override
    public Emp selectById(Integer id) {
        Emp emp=empMapper.selectById(id);
        return emp;
    }

    @Override

    public void addEmp(Emp emp)
    {
     empMapper.insert(emp);
    }

    @Override

    public void update(Emp emp)
    {
      empMapper.update(emp);
    }


//    @Override
//    public void page2(Character character)
//    {
//      PageBean pageBean=new PageBean();
//      pageBean.setTotal(empMapper.count());
//
//        Integer start=character.getPage()-1*character.getPageSize();
//        empMapper.Page2(start,character.getPageSize());
//
//    }

//    public PageBean list(Integer page,Integer pageSize)
//    {
//
//        两个参数
//     PageBean pageBean=new PageBean();
//     pageBean.setTotal(empMapper.count());
//     pageBean.setRows(empMapper.pageSelect((page-1)*pageSize,pageSize));
//     return pageBean;
//    }


}

